<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>数组</title>
  </head>
  <body>
    <script>
      // 数据类型
      // 简单：存储的是 值               不能套东西
      // 复杂： 引用类型 存储的是 地址    可以套东西
      let num = 123 // Number 数字
      let num1 = 10 // 整数 parseInt
      let num2 = 30.2 // 小数 浮点 parseFloat

      let str = '123' // string 字符串
      let bool1 = true
      let bool2 = false // 布尔

      let nu = null // 空
      let num3 = undefined // 未定义

      // 数组 复杂
      let arr1 = [1, 2, 3, 4, '1', true, 30.2, null]
      let arr2 = [1, 2, 3, 4, 5]

      console.log(arr1)
      console.log(arr2)
      document.writeln(arr1 + '<br>')
      document.writeln(arr2)

      //  定义了一个空数组 相当于一个容器  装数据
      let arr3 = []
      console.log(arr3.length) // 0
      console.log(arr3) // []

      let classes = ['姜新华', '周祺', '侯睿', '郑世豪', '张宇']
      // console.log(classes)
      console.log(classes[0])
      console.log(classes[4])
      console.log(classes.length)

      let arr4 = [7, 44, 78, 12, 4, 90]
      console.log(arr4)
      arr4[3] = 100
      console.log(arr4)
      console.log(arr4[-1]) // undefined 越界 下标不存在的时候

      let arr5 = [32, 534, 123, 67, 1232, 5]
      // 遍历数组
      for (let i = 0; i < arr5.length; i++) {
        // i 是下标 0 1 2 3 4 5
        // arr5[i] 是内容 32  534  123  67  1232  5
        console.log(i) // 输出 下标
        console.log(arr5[i]) // 输出 内容
      }

      //push 在数组的 后面 添加元素
      let arr6 = ['李金嬴']
      console.log(arr6)
      arr6.push('张宇', '侯睿')
      console.log(arr6)
      // unshift 在数组的 开头 添加元素
      arr6.unshift('姜新华')
      console.log(arr6)

      // 清空下标
      let arr7 = ['jxh', 'zhouqi', 'ljj', 'zsh', 'hourui']
      console.log(arr7)
      delete arr7[3]
      console.log(arr7)
      console.log(arr7.length) // 长度不变

      // 删除元素
      // pop 删除最后一个
      let arr8 = ['jxh', 'zhouqi', 'ljj', 'zsh', 'hourui']
      arr8.pop()
      console.log(arr8)
      // shift 删除第一个元素
      arr8.shift()
      console.log(arr8)

      // splice
      // 删除
      let arr9 = ['jxh', 'zhouqi', 'ljj', 'zsh', 'hourui']
      //   let res = arr9.splice(1,3) // 从谁开始  删除几个
      let res = arr9.splice(1) // 从谁开始  删除到最后一个
      console.log(arr9)
      console.log(res)

      //   增加
      arr9.splice(0, 1, 'hourui', 'zhangyu', 'gongrui')
      console.log(arr9)

      let arr = [88, 78, 100, 34, 99]
      //   arr.sort()
      //   升序 从小到大
      arr.sort(function (a, b) {
        return a - b
      })
      console.log(arr) // [34, 78, 88, 99, 100]
      // 降序 从大到小
      arr.sort(function (a, b) {
        return b - a
      })
      console.log(arr) // [100, 99, 88, 78, 34]

      // reserve() 反转数组
      let arr10 = ['jxh', 'zhouqi', 'ljj', 'zsh', 'hourui']
      console.log(arr10.reverse())

      //   concat() 合并数组
      let a1 = [1, 2, 4]
      let a2 = [7, 0, 6]
      let res1 = a1.concat(a2)
      console.log(res1) // [1, 2, 4, 7, 0, 6]

      let a3 = [32, 546, 2, 76, 218, 123]
      let res2 = a3.concat(20, '丁晓豆', 'jiangxinhua', 209, 9.2, true)
      console.log(a3)
      console.log(res2) // [32, 546, 2, 76, 218, 123, 20, '丁晓豆', 'jiangxinhua', 209, 9.2, true]

      //   join（） 数组转字符串
      let a4 = [32, 546, 2, 76, 218, 123]
      let res3 = a4.join('|')
      console.log(a4)
      console.log(res3)

      // slice（）截取数组的一部分数据
      let a5 = [1, 2, 3, 4, 5, 6, 7, 8]
      let a6 = a5.slice(-4) // 后4个  [5, 6, 7, 8]
      let a7 = a5.slice(2) // 从下标2 开始 截取 到 最后一个  [3, 4, 5, 6, 7, 8]
      let a8 = a5.slice(1, 3) // 从下标 1开始 截取 到3（不包含3） [2, 3] 开始下标 到 下标+1
      console.log(a8)

      //   indexOf 从左检查数组中有没有这个数值
      let a9 = [1, 2, 3, 4, 5, 6, 7, 8]
      //   let i = a9.indexOf(3) // 括号里的3 是值
      //   console.log(i) // 找到的结果是下标 2

      let i = a9.indexOf(9) // 括号里的9 是值
      console.log(i) // 找不到的结果  返回是-1

      //   lastIndexOf 从右检查数组中有没有这个数值
      let a10 = [1, 2, 3, 4, 5, 6, 7, 8]
      let j = a10.lastIndexOf(9)
      console.log(j)

      let num10 = 3564792136 // 不能排序
      let num11 = '3564792136' // 不能排序
      let num12 = [3,5,6,4,7,9,2,1,3,6] // 可以排序

    </script>
  </body>
</html>
